import { ApiPropertyOptional } from "@nestjs/swagger";
import { IsNumber, IsOptional } from "class-validator";

// 定义分页请求接口
export interface IPageRequest {
  size?: number;
  page?: number;
  param: Record<string, any>;
}

// 定义分页响应接口，使用泛型 T 表示数据类型
export interface IPageResponse<T> {
  total: number;
  data: T[];
  page: number;
}

// 定义处理分页请求的函数类型，使用泛型 T
export type PageHandlerRequest<T> = (
  request: IPageRequest,
) => Promise<IPageResponse<T>>;

export class IdObject {
  @ApiPropertyOptional({ description: '唯一标识' })
  @IsNumber()
  id: number;
}

// 示例使用
// 假设数据类型为 User
// interface User {
//   id: number;
//   name: string;
// }

// // 实现 PageHandler 类型的函数
// const userPageHandler: PageHandler<User> = async (request) => {
//   // 模拟从数据库获取数据
//   const mockData: User[] = [
//     { id: 1, name: 'Alice' },
//     { id: 2, name: 'Bob' },
//   ];

//   return {
//     total: mockData.length,
//     data: mockData,
//     page: request.page || 1,
//   };
// };
